package com.hsjk.szwj.module.train.service.impl;

import com.hsjk.szwj.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.hsjk.szwj.module.train.controller.admin.vo.AdminCourseCatalogCreateReqVO;
import com.hsjk.szwj.module.train.controller.admin.vo.AdminCourseCatalogDetailRespVO;
import com.hsjk.szwj.module.train.controller.admin.vo.AdminCourseCatalogUpdateReqVO;
import com.hsjk.szwj.module.train.controller.admin.vo.AdminGetCourseCatalogByCourseIdRespVO;
import com.hsjk.szwj.module.train.convert.CourseCatalogConvert;
import com.hsjk.szwj.module.train.dal.dataobject.course.CourseCatalogDO;
import com.hsjk.szwj.module.train.dal.mysql.course.ICourseCatalogMapper;
import com.hsjk.szwj.module.train.service.ICourseCatalogService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author chenjiawei
 * @desc
 * @Date 2023/09/25 16:17
 **/
@Service
public class CourseCatalogServiceImpl implements ICourseCatalogService {
    @Resource
    ICourseCatalogMapper courseCatalogMapper;

    @Override
    public List<AdminGetCourseCatalogByCourseIdRespVO> listCourseCatalogByCourseId(Long courseId) {
        List<CourseCatalogDO> courseCatalogDOS = courseCatalogMapper.selectList(new LambdaQueryWrapperX<CourseCatalogDO>()
                .eq(CourseCatalogDO::getCourseId, courseId)
                .orderByAsc(CourseCatalogDO::getSortNo));
        return CourseCatalogConvert.INSTANCE.convertAdminGetCourseCatalogByCourseIdRespVO(courseCatalogDOS);
    }

    @Override
    public AdminCourseCatalogDetailRespVO getCourseCatalogDetail(Long id) {
        CourseCatalogDO courseCatalogDO = courseCatalogMapper.selectById(id);
        return CourseCatalogConvert.INSTANCE.convertAdminCourseCatalogDetailRespVO(courseCatalogDO);
    }

    @Override
    public Boolean createCourseCatalog(AdminCourseCatalogCreateReqVO reqVO) {
        CourseCatalogDO courseCatalogDO = CourseCatalogConvert.INSTANCE.convertCourseCatalogDO(reqVO);
        int insert = courseCatalogMapper.insert(courseCatalogDO);
        return insert > 0 ? Boolean.TRUE : Boolean.FALSE;
    }

    @Override
    public Boolean updateCourseCatalog(AdminCourseCatalogUpdateReqVO reqVO) {
        CourseCatalogDO courseCatalogDO = CourseCatalogConvert.INSTANCE.convertCourseCatalogDO(reqVO);
        int update = courseCatalogMapper.updateById(courseCatalogDO);
        return update > 0 ? Boolean.TRUE : Boolean.FALSE;
    }

    @Override
    public Boolean deleteCourseCatalog(Long id) {
        int result = courseCatalogMapper.deleteById(id);
        return result > 0 ? Boolean.TRUE : Boolean.FALSE;
    }
}
